# -*- coding: latin-1 -*-
#!/usr/bin/env python
import wx
import MenuPrincipal
import Seguridad.seguridadstock
import Errores
import Excepciones.Genericas
import sys    
import Handler.handler
import MenuPrincipal.Form
import Configuracion
import clasesmultiproposito.archivo_configuracion
class frmLogeoSistema(Errores.ManejoErrores):
    def __init__(self,parent):      
        self.__Parent = parent
        Errores.ManejoErrores.__init__(self, None)
        self.SetClase("frmLogeoSistema")   
        self.SetMetodo("__init__")
        self.AddSeguimientoCodigo()
        if self.__OnInit()== True:
            pass
        else:
            Errores.DialogGradient(
            self.GetError()
            , "Error" + self.GetMetodo()
            , wx.OK | wx.ICON_WARNING
            , None
            )
            self.LimpiarErrores()
    def __OnInit(self):
        try:
            self.__Xrc = wx.xrc.XmlResource('Xrc\LogeoConfiguracion\FrmLogeo.xrc')
            self.__Xrc.AddHandler(Handler.handler.PlateButtonXmlHandler())
            self.__Xrc.AddHandler(Handler.handler.GradientButtonXmlHandler())
            self.__Frame = self.__Xrc.LoadFrame(None,"ID_FrmNewLogin")
            if self.__EnlazarEventos()== True:
                pass
            else:
                return False
            if self.__AddIconos()== True:
                pass
            else:
                return False
            self.__ChkRecordarme_Enable(False)
            if self.__InicioRecordarUsuario()== True:
                pass
            else:
                return False
            self.__OcultarProgreso(False)
            return True
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            return False 
    def __EnlazarEventos(self):
        try:
            self.SetMetodo("__EnlazarEventos")
            panel = wx.xrc.XRCCTRL(self.__Frame, "ID_PanelPrincipal")
            panel.Bind(wx.EVT_PAINT,self.__OnPaint)
            self.__Frame.Bind(wx.EVT_BUTTON
                              ,self.__CmdCerrar_Click
                              ,wx.xrc.XRCCTRL(self.__Frame, "ID_CmdCerrar"))
            
            self.__Frame.Bind(wx.EVT_BUTTON
                              ,self.__CmdConfiguracion_Click
                              ,wx.xrc.XRCCTRL(self.__Frame, "ID_CmdConfiguracion"))
            
            self.__Frame.Bind(wx.EVT_BUTTON
                              ,self.__CmdLogearse_Click
                              ,wx.xrc.XRCCTRL(self.__Frame, "ID_CmdLogearse"))
            return True
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            return False
    def __AddIconos(self):
        try:
            self.SetMetodo("__AddIconos")
            self.AddSeguimientoCodigo()
            self.__CmdCerrar_SetBitmap(CloseBox16x16.GetBitmap())
            self.__ImageIcono_SetBitmap(IconoLogin24x24.GetBitmap())
            self.__CmdLogearse_SetBitmap(Ok24x24.GetBitmap())
            self.__CmdConfiguracion_SetBitmap(Config24x24.GetBitmap())
            return True
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            return False
    
    def __InicioRecordarUsuario(self):
        try:
#            self.SetMetodo("__InicioRecordarUsuario")
#            self.AddSeguimientoCodigo()
#            Archivo = clasesmultiproposito.archivo_configuracion.ArchivosDeConfiguracion()
#            if Archivo.AbrirArchivo('Config.cfg')== True:
#                if Archivo.GetSeccion("Usuario", "Recordar")== "True":
#                    self.__ChkRecordarme_SetValue(True)
#                    self.__TxtUsuario_SetValue(Archivo.("Usuario", "NombreUsuario"))
#                    self.__TxtPass_SetValue(Archivo.GetSeccion("Usuario", "Password"))
#                    return True
#                else:
#                    self.__ChkRecordarme_SetValue(False)
#                    self.__TxtUsuario_SetValue("")
#                    self.__TxtPass_SetValue("")
#                    return True
#            else:
#                return True
#        except ConfigParser.NoSectionError:
#            return True
            return True
        except:
            self.SetError(sys.exc_info(), Errores.NIVEL_ERROR_ALTA)
            return False
    def __Recordar(self):
        return True
#        try:
#            self.SetMetodo("__Recordar")
#            self.AddSeguimientoCodigo()
#            if self.__ChkRecordarme_GetValue()== True:
#                Archivo = clasesmultiproposito.archivo_configuracion.ArchivosDeConfiguracion()
#                Archivo.SetSeccion("Config.cfg", "Usuario","Recordar", "True")
#                Archivo.SetSeccion("Config.cfg", "Usuario", "NombreUsuario", self.__TxtUsuario_GetValue())
#                Archivo.SetSeccion("Config.cfg", "Usuario", "Password", self.__TxtPass_GetValue())
#                return True
#            else:
#                Archivo = clasesmultiproposito.archivo_configuracion.ArchivosDeConfiguracion()
#                Archivo.SetSeccion("Config.cfg"
#                                   , "Usuario"
#                                   ,"Recordar"
#                                   , "False")
#                Archivo.SetSeccion("Config.cfg"
#                                   , "Usuario"
#                                   ,"NombreUsuario"
#                                   , "")
#                Archivo.SetSeccion("Config.cfg"
#                                   , "Usuario"
#                                   ,"Password"
#                                   ,"")
#                return True
#        except ConfigParser.NoSectionError:
#            self.SetError(sys.exc_info(), Errores.NIVEL_ERROR_ALTA)
#            return True
#        except:
#            self.SetError(sys.exc_info(), Errores.NIVEL_ERROR_ALTA)
#            return False
    def __Validar(self):
        self.SetMetodo("__Validar")
        self.AddSeguimientoCodigo()
        if self.__TxtUsuario_GetValue()== "":
            raise Excepciones.Genericas.Generico_ErrorDeValidacion(
                                self.GetClase()
                                , self.GetMetodo()
                                , "No ingreso el usuario")
        if self.__TxtPass_GetValue()== "":
            raise Excepciones.Genericas.Generico_ErrorDeValidacion(
                                self.GetClase()
                                , self.GetMetodo()
                                , "No ingreso la password")
        return True
    def __OcultarProgreso(self,mOcultar = True):
        try:
            self.__LblInfo_Show(mOcultar)
            self.__BarraProgreso_Show(mOcultar)
        except:
            raise Excepciones.Genericas.Generico_ErrorGeneracionDeFormulario(
                        self.GetClase()
                        , self.GetMetodo()
                        , sys.exc_info([1]))
    def __OnPaint(self,evt):
        try:
            self.SetMetodo("__OnPaint")
            self.AddSeguimientoCodigo()
            evt.Skip()
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            return False
    def __CmdLogearse_Click(self,evt):
        try:
            self.SetMetodo("__CmdLogearse_Click")
            self.AddSeguimientoCodigo()
            evt.Skip()
            if self.__Validar()== True:
                
                self.__security = Seguridad.seguridadstock.Manejador()
                self.__security.setHandler(self)
                if self.__security.Logear(self.__TxtUsuario_GetValue()
                                    , self.__TxtPass_GetValue())== True:
                    self.SetearProgreso(100, "Generando interfaz de usuario")
                    self.__MenuPrincipal = MenuPrincipal.Form.FrmMenuPrincipal(None
                                                                          , None
                                                                 , self.__security)
                    self.__MenuPrincipal.Show(True)
                    self.__Frame.Close()
                else:
                    Errores.DialogGradient(
                    self.__Seg.ErrorDescripcion
                    , "Error" + self.GetError()
                    , wx.OK | wx.ICON_WARNING
                    , self.__Frame
                    )
            else:
                
                Errores.DialogGradient(
                    self.GetError()
                    , "Error" + self.GetError()
                    , wx.OK | wx.ICON_WARNING
                    , self.__Frame
                    )
        except Excepciones.Genericas.Generico_ErrorDeValidacion:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_BAJA)
            Errores.DialogGradient(
                    self.GetDescripcionException()
                    , "Validar" + self.GetError()
                    , wx.OK | wx.ICON_INFORMATION
                    , self.__Frame
                    )
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            Errores.DialogGradient(
                    self.GetError()
                    , "Error" + self.GetError()
                    , wx.OK | wx.ICON_WARNING
                    , self.__Frame
                    )
    def __CmdLogearse_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdLogearse").Enable(enable)
    def __CmdLogearse_SetBitmap(self,bitmap = wx.NullBitmap):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdLogearse").SetBitmap(bitmap)
    def __CmdConfiguracion_Click(self,evt):
        try:
            self.SetMetodo("__CmdConfiguracion_Click")
            self.AddSeguimientoCodigo()
            self.__Configuracion = Configuracion.frmConfiguracionSistema(self.__Frame, None)
            self.__Configuracion.Show(True)
            self.__Frame.Show(False)
            evt.Skip()
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            Errores.DialogGradient(
                    self.GetError()
                    , "Error" +  self.GetError()
                    , wx.OK |wx.ICON_WARNING
                    , self.__Frame
                    )
            self.LimpiarErrores()
    def __CmdConfiguracion_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdConfiguracion").Enable(enable)
    def __CmdConfiguracion_SetBitmap(self,bitmap = wx.NullBitmap):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdConfiguracion").SetBitmap(bitmap)
    def __CmdCerrar_Click(self,evt):
        try:
            evt.Skip()
            self.SetMetodo("__CmdCerrar_Click")
            self.AddSeguimientoCodigo()
            self.__Frame.Close()
        except:
            self.SetError(sys.exc_info()[:2], Errores.NIVEL_ERROR_ALTA)
            Errores.DialogGradient(
                                   self.GetError()
                                   , "Error" + self.GetMetodo()
                                   , wx.OK | wx.ICON_WARNING
                                   , self.__Frame
                                   )
            self.LimpiarErrores()
    def __CmdCerrar_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdCerrar").Enable(enable)
    def __CmdCerrar_SetBitmap(self,bitmap = wx.NullBitmap):
        wx.xrc.XRCCTRL(self.__Frame, "ID_CmdCerrar").SetBitmap(bitmap)
    def __Image_SetBitmap(self,bitmap = wx.NullBitmap):
        wx.xrc.XRCCTRL(self.__Frame, "ID_Image").SetBitmap(bitmap)
    def __TxtUsuario_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_TxtUsuario").Enable(enable)
    def __TxtUsuario_GetValue(self):
        return wx.xrc.XRCCTRL(self.__Frame, "ID_TxtUsuario").GetValue()
    def __TxtUsuario_SetValue(self,value = ""):
        wx.xrc.XRCCTRL(self.__Frame, "ID_TxtUsuario").SetValue(value)
    def __TxtPass_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_TxtPass").Enable(enable)
    def __TxtPass_GetValue(self):
        return wx.xrc.XRCCTRL(self.__Frame, "ID_TxtPass").GetValue()
    def __TxtPass_SetValue(self,value = ""):
        wx.xrc.XRCCTRL(self.__Frame, "ID_TxtPass").SetValue(value)
    def __ChkRecordarme_Enable(self,enable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_ChkRecordarme").Enable(enable)
    def __ChkRecordarme_GetValue(self):
        return wx.xrc.XRCCTRL(self.__Frame, "ID_ChkRecordarme").GetValue()
    def __ChkRecordarme_SetValue(self,value = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_ChkRecordarme").SetValue(value)
    def __LblInfo_Enable(self,mEnable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_LblInfo").Enable(mEnable)
    def __LblInfo_Show(self,mShow = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_LblInfo").Show(mShow)
    def __LblInfo_SetLabel(self,mLabel = "Espere por favor.."):
        wx.xrc.XRCCTRL(self.__Frame, "ID_LblInfo").SetLabel(mLabel)
    def __BarraProgreso_Enable(self,mEnable = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_BarraProgreso").Enable(mEnable)
    def __BarraProgreso_Show(self,mShow = True):
        wx.xrc.XRCCTRL(self.__Frame, "ID_BarraProgreso").Show(mShow)
    def __BarraProgreso_SetRange(self,mRange = 100):
        wx.xrc.XRCCTRL(self.__Frame, "ID_BarraProgreso").SetRange(mRange)
    def __BarraProgreso_SetValue(self,mValue):
        wx.xrc.XRCCTRL(self.__Frame, "ID_BarraProgreso").SetValue(mValue)
    def __BarraProgreso_GetValue(self):
        return wx.xrc.XRCCTRL(self.__Frame, "ID_BarraProgreso").GetValue()
    def __ImageIcono_SetBitmap(self,bitmap = wx.NullBitmap):
        wx.xrc.XRCCTRL(self.__Frame, "ID_ImageIcono").SetBitmap(bitmap)
    def __SetBackgroundStyle(self,style = wx.BG_STYLE_CUSTOM):
        wx.xrc.XRCCTRL(self.__Frame, "ID_PanelPrincipal").SetBackgroundStyle(style)
    def __OnEraseBackground(self, evt):
        dc = evt.GetDC()
        if not dc:
            dc = wx.ClientDC(self)
            rect = self.__BuscadorDependencias.GetUpdateRegion().GetBox()
            dc.SetClippingRect(rect)
        dc.Clear()
        bmp = Iconos.PanelLogin.GetBitmap()
        dc.DrawBitmap(bmp, 0, 0)
    def SetearProgreso(self,mRango,mInfo):
        self.SetSize((400,230))
        self.__OcultarProgreso(True)
        self.__BarraProgreso_SetValue(0)
        self.__BarraProgreso_SetRange(mRango)
        self.__LblInfo_SetLabel(mInfo)
    def AvanzarBarra(self,mInfo):
        self.__LblInfo_SetLabel(mInfo)
        self.__BarraProgreso_SetValue(self.__BarraProgreso_GetValue() + 1)
    def SetSize(self,mSize = (400,200)):
        self.__Frame.SetSize(mSize)
    def Show(self,s = True):
        self.SetSize((400,200))
        self.__Frame.Show(s)
    def GetFrame(self):
        return self.__Frame
    
    
#--------------------------Iconos------------------------------------------------------
from wx.lib.embeddedimage import PyEmbeddedImage
CloseBox16x16 = PyEmbeddedImage(
    "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwY"
    "AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUI"
    "IFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuj"
    "a9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMB"
    "APh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCd"
    "mCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgw"
    "ABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88Suu"
    "EOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg"
    "g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgug"
    "dfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7i"
    "JIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKS"
    "KcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8/"
    "/UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBC"
    "CmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHa"
    "iAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyG"
    "vEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE"
    "bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKgg"
    "HCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmx"
    "pFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+Io"
    "UspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgX"
    "aPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1Qw"
    "NzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnU"
    "lqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1"
    "gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp"
    "G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acK"
    "pxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsM"
    "zhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZL"
    "TepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnu"
    "trxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFn"
    "Yhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPj"
    "thPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/u"
    "Nu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh"
    "7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7"
    "+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGL"
    "w34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8Yu"
    "ZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhO"
    "OJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCep"
    "kLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQ"
    "rAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0d"
    "WOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF"
    "fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebe"
    "LZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ2"
    "7tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHt"
    "xwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTra"
    "dox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLT"
    "k2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86"
    "X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/Xf"
    "Ft1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D"
    "BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl"
    "/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz"
    "/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAxFJ"
    "REFUeNpUk01onFUYhZ97v3tnvm9+vklmMmNaddpN6ySkKULFn1IQqhakkAEX4g/GguJeKaKY"
    "jSKty6IrC+5dGGk2kaJQIp0SbRWRphSlGmlJnc40mcz/93OvixkXfeFwzvvCe1bniJKAlIUn"
    "FTMbhrK2xMaCZQR4QIsIRBZuFhCbP2NRAwsnHim98f47p07L0rRPEBpjDBgLY7Zjba0F6cjG"
    "xkb9i6+XP+gMh9+rGe08++Gbr3xSOVktD3d2EHb8aC3WRBAbhLVYY8YmhkOPz5Zbd7c+W714"
    "6SVV8fR8Wut065efGLRaRJ0uUb+H9lxEMoGNImy7CyaGhMZKiZ9OUUx7+TwcUH0poruXa6ZR"
    "36bTbJI+coSpxVPc+PRjEvV/EcMB8sWT9A5UkF99iRsEZDyX+5ExQhCryETc/rGG7kMXeOLz"
    "tykvVAlTPuuvvoY/Mw8vLxLkC7TXaqRXv8N3oCVBCoEKjKFtJAlpGVionTmL+1iF6edf4NHz"
    "52lEITLlsf3tN3RrV3CEAGAoBI6wyMgIHOGQlIqMVtj1dS4tLHB9bY1d38dmsjQvXKB35ix7"
    "Ox2SSpGQCi0lSIsKYounNZOOZIAlG4TYPXu402hgPJdsLkvh8CG2i0Xce/cQnodnLYGIMVGE"
    "DIwlKRx8rfHDiFS1illawuQn6dWu4O/u8Mzrizy1vIx38CDpIMBXGldLEKACA0k/R851Uak0"
    "W8eP087lsCsr5M+dw1ycoT97mKmjR/nz2DHceh2/UMAb7EK7h0pKif9QkcxEHqffx66sEP91"
    "i9zlGvvm5xl0Ovyz9BHd8j70tWsU5+ZI6QRe4w5s1VElLdXUw3tlJl9EhiGZMGT65h/o/fuJ"
    "lcIF4tYuuatXSVUqGCHwky4pOZDyd5TaDKLrQSrRS8/OFdL93rgyPDh2fPu/XZ5LY/NGp2n5"
    "W2SA6vTkW++deO500puYGIShCWKQEpQAKUaBEYxYaiXu12833139YWm9M1wWJSGIrWUSns5q"
    "KjsR0dCCAzhiBC1GuxKAEE4utr+tGX6VwH8DANZcUcRNR+HNAAAAAElFTkSuQmCC")
IconoLogin24x24 = PyEmbeddedImage(
    "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")
Ok24x24 = PyEmbeddedImage(
    "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"
    "Gog+CeC/AwA1rAX5EYLtJQAAAABJRU5ErkJggg==")
Config24x24 = PyEmbeddedImage(
    "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"
    "RU5ErkJggg==")